package com.leetcode.周赛.第227场;

/**
 * @author: ZhouBert
 * @date: 2021/2/7
 * @description: 5672. 检查数组是否经排序和轮转得到
 * https://leetcode-cn.com/contest/weekly-contest-227/problems/check-if-array-is-sorted-and-rotated/
 */
public class A_5672_检查数组是否经排序和轮转得到 {

	public static void main(String[] args) {
		int[] nums = new int[]{3, 4, 5, 1, 2};
		A_5672_检查数组是否经排序和轮转得到 action = new A_5672_检查数组是否经排序和轮转得到();
		boolean res = action.check(nums);
	}


	/**
	 * 没想到每日一题刚好就是 非递减序列！
	 * --
	 * 没想到思路是对的。我讨论了具体的情况，第一版有点冗余代码。
	 * @param nums
	 * @return
	 */
	public boolean check(int[] nums) {
		int len = nums.length;
		if (len == 1) {
			return true;
		}


		int[] arr = new int[2];
		int i = 1;
		for (; i < len; i++) {
			if (nums[i - 1] > nums[i]) {
				break;
			}
		}
		//如果一路非递减下去
		if (i == len) {
			return true;
		}
		arr[0] = i - 1;
		//开始检查第二段
		int j = i + 1;
		for (; j < len; j++) {
			if (nums[j - 1] > nums[j]) {
				break;
			}
		}
		if (j != len) {
			//说明此时第二段木有到尽头
			return false;
		}
		arr[1] = j - 1;
		if (nums[0] >= nums[j - 1]) {
			return true;
		} else {
			return false;
		}
	}


}
